Dirty Assign
Mit einem “Dirty Assign” kann man auf Daten zugreifen, auf die man eigentlich keinen Zugriff hat…
Mit dem “Dirty Assign” haben Sie die Möglichkeit, auf Variablen und Strukturen von rufenden Programmen zuzugreifen, die nicht zur Verfügung stehen.
Dies macht eventuell dann Sinn, wenn Sie einen Funktionsbaustein aufrufen und innerhalb dieses Funktionsbausteins eine Variable verwendet wird, die aber nicht als Exporting-Parameter zurückgegeben wird.
Sie können so auch in einem per externem PERFORM aufgerufenen Routine auf Variablen des gerufenen Programms zugreifen.
Soll auf eine Tabelle zugegriffen werden, so beachten Sie bitte das Beispiel unten im Artikel.
Das folgende Beispiel soll dies verdeutlichen.
- Als erstes wird ein Funktionsbaustein ausgeführt, der lediglich eine nur in der Funktionsgruppe bekannte Variable setzt. Diese wird durch den Dirty Assign ermittelt.
- Danach wird eine externe Routine aufgerufen, die auch nur eine — nur in diesem Programm bekannte — Variable setzt.
Funktionsbaustein ZTEST
FUNCTION ZTEST.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"----------------------------------------------------------------------
* Der Funktionsbaustein befindet sich in der Gruppe ZTESTFG
* Das Rahmenprogramm heisst deswegen: SAPLZTESTFG
*-----------------------------------------------------------------------
fb_testvar = 'Trick17'.
ENDFUNCTION.
Programm ZZENNO13
*&---------------------------------------------------------------------* *& Report ZZENNO13 * *& * *&---------------------------------------------------------------------* REPORT zzenno13. DATA testvar(12). START-OF-SELECTION. PERFORM test. WRITE: / testvar. *---------------------------------------------------------------------* * FORM test * *---------------------------------------------------------------------* FORM test. testvar = 'Tricktresor'. ENDFORM.
Der Dirty Assign
REPORT zzenno12 NO STANDARD PAGE HEADING. *-- Das Feldsymbol, dem der Wert zugewiesen wird FIELD-SYMBOLS: <ptr>. START-OF-SELECTION. *-- Aufruf des Funktionsbausteins *-- Hier wird die Variable FB_VARIABLE_GLOBAL gesetzt CALL FUNCTION 'ZTEST'. *-- Den Wert zuweisen (Funktionsgruppe ZTESTFG) ASSIGN ('(SAPLZTESTFG)FB_TESTVAR') TO <ptr>. *-- und ausgeben WRITE: / 'Wert der Funktionsbaustein-Variablen FB_TESTVAR:', AT 50 <ptr>. *-- Aufruf eines externen Programms: *-- Hier wird die Variable TESTVAR verwendet. PERFORM test(zzenno13). *-- Nun die Feldwerte ermitteln: ASSIGN ('(ZZENNO13)TESTVAR') TO <ptr>. *-- und ausgeben WRITE: / 'Wert der Submit-Variablen TESTVAR:', AT 50 <ptr>.
Ausgabe
Wert der Funktionsbaustein-Variablen FB_TESTVAR: Trick17
Wert der Submit-Variablen TESTVAR: Tricktresor
Dirty Assign mit Tabelle
Um auf einen Tabellenkörper mittels der ASSIGN-Technik zuzugreifen, sind die folgenden Schritte notwendig:
1. Definition des Arbeitsbereiches
DATA ls_xvbap TYPE vbapvb.
2. Definition des Feldsymbols
FIELD-SYMBOLS <XVBAP> TYPE ANY TABLE.
3. Der Dirty Assign
ASSIGN ('(SAPMV45A)XVBAP[]') TO <xvbap>.
4. Zuweisung der Tabelle
LOOP AT <xvbap> INTO ls_xvbap.
...
ENDLOOP.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024